package com.wuxuan.algorithm_homework.random;

import java.util.Random;

/**
 * random7实现random10
 *
 * 有一个名为 random7 的函数，它可以返回0~6的任意一个。
 * 现在要实现一个函数 random10，使得返回0到9 中的任意一个数字，
 * 并且只能通过调用 random7 这个函数来实现，具体该怎么做?
 */
public class Random10 {

    public int random7() {
        Random random = new Random();
        return random.nextInt(7);
    }

    public int random10() {
        while (true) {
            int num1 = random7();
            int num2 = random7();
            int val = num1 * 7 + num2;
            if (val < 40) {
                return val % 10;
            }
            // 39 - 48 舍弃。 重新尝试
        }
    }

    public static void main(String[] args) {
        Random10 random10Generator = new Random10();
        int[] count = new int[10];
        int times = 1000000;
        for (int i = 0; i < times; i++) {
            int num = random10Generator.random10();
            count[num]++;
        }

        for (int i = 0; i< count.length; i++) {
            System.out.println("数字" + i + "出现的次数: " + count[i]);
        }

    }
}
